//
//  P3392flag.cpp
//  Algorithm
//
//  Created by 刘锦程 on 2023/9/10.
//

#include <stdio.h>
#include<iostream>
using namespace std;
int N,M;
struct node{
    int w,b,r;
    node(){
        w=0;
        b=0;
        r=0;
    }
};
char c[52][52];
int ans=2147483647,ge;
node color[53];
int bc[52];
//1 w
//2 b
//3 r
int book[3];

void dfs(int step){
    if(step==N){
        if(book[0]&&book[1]&&book[2]){
            ans=min(ge,ans);
        }
        return;
    }
    for(int i=0;i<3;i++){
        if(i==bc[step-1]||i==bc[step-1]+1){
            book[i]++;
            if(i==0){
                ge+=M-color[step].w;
                bc[step]=0;
                dfs(step+1);
        
                ge-=(M-color[step].w);
            }else if(i==1){
                ge+=M-color[step].b;
                bc[step]=1;
                dfs(step+1);
                ge-=(M-color[step].b);
            }else{
                ge+=M-color[step].r;
                bc[step]=2;
                dfs(step+1);
                ge-=(M-color[step].r);
            }
            book[i]--;
        }
        
    }
}
int P3392ans(){
    cin>>N>>M;
    for(int i=0;i<N;i++){
        for(int j=0;j<M;j++){
            cin>>c[i][j];
            if(c[i][j]=='W'){
                color[i].w++;
            }else if(c[i][j]=='B'){
                color[i].b++;
            }else{
                color[i].r++;
            }
        }
    }
    bc[0]=0;
    ge+=M-color[0].w;
    book[0]++;
    dfs(1);
    if(ans!=2147483647)
    cout<<ans<<endl;
    else cout<<0<<endl;
    return 0;
}
